package client.dao;

import client.pojo.Message;
import util.JDBCUtils;

import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class MessageDao {

    /**
     * 获取所有的信息
     * @return
     */
    public List<Message> getAllMessage(){
        List<Message> list = new ArrayList<>();
        try {
            // 创建数据库连接
            Connection connection = JDBCUtils.getConnection();
            String sql = "select * from message";
            // 预处理
            PreparedStatement ps = connection.prepareStatement(sql);
            // 执行
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                // 将查询到的message对象装入list集合
                Message message = new Message(rs.getString("userName"),rs.getString("content"),  rs.getDate("sendTime")+" "+rs.getTime("sendTime"));
                list.add(message);
            }
            // 关闭连接
            JDBCUtils.closeResource(connection,ps);
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 返回一个消息集合
        return list;

    }

    /**
     * 把发送的信息存入数据库
     * @param inputMessage 发送的一条信息
     */
    public void saveMessage(Message inputMessage) {
        try {
            // 获取数据库连接
            Connection connection = JDBCUtils.getConnection();
            // 数据库插入一条信息操作
            String sql = "insert into message values(null,?,?,?)";
            // 预处理
            PreparedStatement ps = connection.prepareStatement(sql);
            // 传参
            ps.setString(1,inputMessage.getUserName());
            ps.setString(2,inputMessage.getContent());
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
            String date = df.format(new Date());// new Date()为获取当前系统时间，也可使用当前时间戳
            ps.setString(3,date);
            // 执行操作
            ps.executeUpdate();
            // 关闭连接
            JDBCUtils.closeResource(connection,ps);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
